package ch06.shizhang.shizhang03;

import java.lang.reflect.Method;

/**
 * @author 茜茜
 * @date 2024-11-22 16:20
 */
public class MethodField {
    public static void main(String[] args) {
        try {
            // 获取类
            Class clz = Class.forName("ch01.shili01.Person");
            // 获取实例
            Object obj = clz.newInstance();
            // 获取方法getAge
            Method getAge = clz.getDeclaredMethod("getAge");
            // 设置getAge方法访问范围
            getAge.setAccessible(true);
            // invoke调用方法(静态方法,无参数)
            Object returnAge = getAge.invoke(null, null);
            System.out.println("年龄是：" + returnAge);

            // 获取方法silentMethod
            Method silentMethod = clz.getDeclaredMethod("silentMethod");
            // 设置方法的访问范围
            silentMethod.setAccessible(true);
            // invoke调用方法(实例方法,无参数)
            silentMethod.invoke(obj, null);

            // 获取方法setName
            Method setName = clz.getDeclaredMethod("setName", String.class);
            // invoke调用方法(实例方法,有参数)
            setName.invoke(obj, "小朱");
            // 验证方法效果
            Object returnName = clz.getDeclaredMethod("getName").invoke(obj, null);
            System.out.println("对象的name属性值为：" + returnName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
